Many electronic devices include both a primary and a secondary processor. The primary processor is typically used to perform core functions of the electronic device. The secondary processor performs other functions, such as media processing, math co-processing, and other specialized functions, freeing the primary processor from such tasks. Typically, the hardware structure of the secondary processor is optimized to perform the desired specialized functions. For example, an audio processor may have a pipeline stage architecture that performs one or more predetermined functions on a stream of input audio data prior to applying programmable audio effects to the audio data.
A pipelined stage architecture is efficient for processing a stream of data, but may be inefficient for multiple streams of data. For instance, in performing a predetermined three-dimensional (3D) audio spatialization function on a single input data stream, an audio processor produces multiple outputs corresponding to multiple speakers (e.g., five speakers). Each of the multiple outputs is stored in local memory of the secondary processor at a separate location (sometimes referred to as a mix bin). The audio processor can then apply a programmable audio effect, such as reverberation, to the data passing through each mix bin. However, there is typically more than a single input data stream that must be processed for 3D audio spatialization. Thus, the total number of mix bins required to process 3D output data would be equal to the product of the number of input streams multiplied by the number of speakers. Unfortunately, the number of mix bins is usually limited on a secondary processor. Also, the same programmable audio effects are typically applied to each of the multiple outputs of the predetermined functions. Thus, a conventional use of a pipelined stage architecture results in inefficient processing of multiple input data streams.
It would be desirable to use the pipelined stage architecture for such audio processing, because of the low cost of the secondary processors. However, a technique is needed to improve the processing efficiency of secondary processors having one or more input data streams. It would also be desirable to modify parameters of one or more of the predetermined functions in relation to the output of the programmable audio effects. Another desirable objective would be to enable reprocessing of an output from the programmable audio effects through one or more of the predetermined functions.